package com.yidu.ladder.delivery.service;

import java.util.List;
import java.util.Map;

import com.yidu.ladder.delivery.domain.BasicJobList;
import com.yidu.ladder.delivery.domain.ChargingInfo;
import com.yidu.ladder.delivery.domain.Pack;
import com.yidu.ladder.delivery.domain.PackInfo;
import com.yidu.ladder.delivery.domain.PackVo;

/**
 * 包装业务逻辑类
 * @author ld
 *
 */
public interface PackService {
	
	/**
	 * 查询所有的工作单ID
	 * @return
	 */
	List<String> findAllBasicJobListNo();
	
	/**
	 * 根据工作单
	 * @param jobListNo
	 * @return
	 */
	BasicJobList findBasicJobList(String jobListNo);
	
	/**
	 * 添加包装单
	 * @param pack
	 * @return
	 */
	boolean addPack(List<Pack> packList);
	
	/**
	 * 查询所有的包装单
	 * @return
	 */
	Map<String, Object> findAllPack(Map<String, Object> paramMap);
	
	/**
	 * 查询所有包装信息
	 * @param page
	 * @param limit
	 * @return
	 */
	Map<String, Object> findAllPackInfo();
	
	/**
	 * 查询所有包装单的工作单号
	 * @return
	 */
	List<String> findAllPackJobListNo();
	
	/**
	 * 查询包装单
	 * @return
	 */
	Pack findPack(String jobListNo);
	
	/**
	 * 根据包装项目和体积查询包装信息
	 * @param packaingProject
	 * @param specifications
	 * @return
	 */
	PackInfo findPackInfoByProjectAndSize(String packaingProject, String specifications);
	
	/**
	 * 修改包装单表、工作单表、计费信息表的信息
	 * @param pack 包装表
	 * @param basicJobList 工作单表
	 * @param charginInfo 计费信息表
	 * @return 返回是否修改成功
	 */
	boolean updatePackInfo(Pack pack, BasicJobList basicJobList, ChargingInfo chargingInfo);
	
	/**
	 * 查询所有包装的完整信息
	 * @param paramMap
	 * @return
	 */
	Map<String, Object> findPackWhole(Map<String, Object> paramMap);
	
	/**
	 * 根据输入的工作单号查询打印条形码需要的数据
	 * @param jobListNo
	 * @return
	 */
	PackVo findBarCodeInfo(String jobListNo);
	
	/**
	 * 查询所有包装完成的工作单号
	 * @return
	 */
	List<String> findAllPackSuccess();
}
